home *** CD-ROM | disk | FTP | other *** search
- /* $Id: I3DExRen.h 1.26 1997/07/07 21:56:02 john Exp $ */
- /*****************************************************************************\
- * *
- * I3DExRen.h - I3DExRenderer definition *
- * *
- * Copyright (c) 1995, Ray Dream, Inc. All rights reserved. *
- * *
- \*****************************************************************************/
-
- #ifndef __I3DEXREN__
- #define __I3DEXREN__
-
- #ifndef __I3DEX__
- #include "I3DEx.h"
- #endif
-
-
- //class TRenderInfo;
- struct I3DShGroup;
- struct I3DShEnvironment;
- struct I3DShCamera;
- struct I3DShLightsource;
- struct I3DShScene;
- //struct IShLineArt;
- struct IShRasterBuffer;
- struct I3DShInstance;
- struct IShRasterOffscreen;
- struct InstanceAndTransform;
-
- struct RTData {
- void *data;
- long channelBits;
- long channelOffsetBits;
- long columnBits;
- long rowBits;
- short nbrChannels;
- };
-
-
- enum { k8Color,
- k8Distance,
- k8Position,
- k8Normal,
- k8Alpha,
- k8Index,
- k8Surface
- };
-
- enum { k32Distance,
- k32PositionX,k32PositionY,k32PositionZ,
- k32NormalX,k32NormalY,k32NormalZ,
- k32Alpha,
- k32Index,
- k32SurfaceU,k32SurfaceV,
- k32DiffuseColor,k32SpecularColor,k32SpecularSizeValue,
- k32AmbientValue,k32LambertValue,
- k32ReflectionColor,k32TransparencyColor,k32RefractionValue,
- k32GlowColor
- };
-
- enum {kNbr8GBuffer=k8Surface+1,kNbr32GBuffer=k32GlowColor+1};
-
- struct RTBuffer {
- RTData *channel[kNbr8GBuffer];
- };
-
- struct RT32Data {
- short h;
- short v;
- IShRasterBuffer *channel[kNbr32GBuffer];
- };
-
-
- //typedef BOOLEAN (*TestHitProc) (I3DShInstance *theInstance);
- //typedef Boolean (*CallbackVSVp)(short vv,void *priv);
-
- //****** Globally Unique Ids *************************************************
-
- DEFINE_GUID(IID_I3DExRenderer, 0xAD619EE0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DExGBufferRenderer, 0xAD619EE1L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DExInteractiveRenderer, 0xAD619EE3L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DLineDrawer, 0xAD619EE5L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DExDoubleBuffer, 0xAD619EE6L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DRenderStatistics, 0xAD619EE7L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
-
- DEFINE_GUID(IID_I3DSetScene, 0xd6b30100, 0xf6fa, 0x11d0, 0x85, 0x76, 0x0, 0xa0, 0xc9, 0xc, 0x1b, 0xf1);
-
- //*****************************************************************************
-
- DECLARE_INTERFACE_(I3DSetScene, IUnknown) {
- STDMETHOD(SetScene) (I3DShScene *ascene) PURE;
- };
-
- DECLARE_INTERFACE_(I3DRenderStatistics, IUnknown) {
- STDMETHOD_(I3DRenderStatistics*, Clone) (THIS) PURE;
- STDMETHOD(CombineStatistics) (I3DRenderStatistics** statList, long statListSize) PURE;
- STDMETHOD_(void*, GetDataBuffer) (THIS) PURE;
- STDMETHOD_(short, GetResID) (THIS) PURE;
- };
-
- DECLARE_INTERFACE_(I3DExRenderer, I3DExDataExchanger) {
- STDMETHOD(SetTreeTop) (I3DShGroup* treeTop) PURE;
- STDMETHOD(SetCamera) (I3DShCamera* camera) PURE;
- STDMETHOD(SetEnvironment) (I3DShEnvironment* environment) PURE; // replace the 3 next functions
- //STDMETHOD(SetBackground) (I3DShEnvironment* background) PURE;
- //STDMETHOD(SetBackdrop) (I3DShEnvironment* backdrop) PURE;
- //STDMETHOD(SetAtmosphere) (I3DShEnvironment* atmosphere) PURE;
- STDMETHOD(SetAmbientLight) (const COLOR3D &ambiantColor) PURE;
- STDMETHOD(Dehydrate) (short level) PURE;
- STDMETHOD_(ULONG, GetRenderingTime) () PURE;
- STDMETHOD(SetOffscreen) (IShRasterOffscreen* offscreen) PURE;
- STDMETHOD(SetFieldRenderingData) (Boolean useFieldRendering,short firstFrame) PURE;
- STDMETHOD_(I3DRenderStatistics*, GetRenderStatistics) () PURE;
- STDMETHOD(PrepareDraw) (const RECT3D &totalarea,const VECTOR2D &offscreenOffset,NUM3D zoom, BOOLEAN (*callback) (short vv, void *priv),void *priv) PURE;
- STDMETHOD(DrawRect) (short mode,const RECT3D &area) PURE;
- STDMETHOD_(BOOL, IsSMPAware) () PURE;
- STDMETHOD(GetPreferredTiling) (const RECT3D &area, POINT3D & tileSize) PURE;
- };
-
- DECLARE_INTERFACE_(I3DExGBufferRenderer, IUnknown) {
- STDMETHOD(Set32BitGBuffers) (RT32Data* bufferData) PURE;
- STDMETHOD(Set8BitGBuffers) (RTBuffer* bufferData) PURE;
- };
-
- enum I3DLineDrawerDrawHandlePattern{
- kSelectedHandle=0x01FFFFFF,
- kNotSelectedHandle=0x01F8C63F,
- kFullRoundHandle=0x00EFFFEE,
- kFramedRoundHandle=0x00EDC76E
- };
-
- DECLARE_INTERFACE_(I3DLineDrawer, IUnknown) {
- STDMETHOD(SetPenWidth) (NUM3D width) PURE;
- STDMETHOD(SetPenColor) (COLOR3D acolor) PURE;
- STDMETHOD(Set2DTransform) (const VECTOR2D &offset,const VECTOR2D &zoom) PURE;
- STDMETHOD(MoveTo) (const VECTOR3D &apoint) PURE;
- STDMETHOD(LineTo) (const VECTOR3D &apoint) PURE;
- STDMETHOD(DrawHandle) (long a5x5Pattern) PURE;
- };
-
- enum {kInstanceModifiedTransform=1,kInstanceModifiedShading=2};
-
- DECLARE_INTERFACE_(I3DExInteractiveRenderer, IUnknown) {
- STDMETHOD(AddLightsource) (I3DShLightsource* lightsource) PURE;
- STDMETHOD(RemoveLightsource) (I3DShLightsource* lightsource) PURE;
- STDMETHOD(LightsourceModified) (I3DShLightsource* lightsource) PURE;
- STDMETHOD(AddInstance) (I3DShInstance* instance) PURE;
- STDMETHOD(RemoveInstance) (I3DShInstance* instance) PURE;
- STDMETHOD(InstanceModified) (I3DShInstance* instance,const AFFINETRANSFORM &aT,long how) PURE;
-
- STDMETHOD(InvalAllFCaches) (short how) PURE;
- STDMETHOD(PreDraw) (void *awnd,const RECT3D& clipRect,POINT3D offset,short mode) PURE;
- STDMETHOD(DrawInstances) (long nbrInstances,const InstanceAndTransform *instances) PURE;
- STDMETHOD(PostDraw) () PURE;
- STDMETHOD(DrawOnScreen) (void *awnd,const RECT3D &area) PURE;
- STDMETHOD(GetBackDrawer) (I3DLineDrawer *&aLD) PURE;
- STDMETHOD(RestoreBackDrawer) (I3DLineDrawer *aLD) PURE;
- STDMETHOD(GetForeDrawer) (I3DLineDrawer *&aLD) PURE;
- STDMETHOD(RestoreForeDrawer) (I3DLineDrawer *aLD) PURE;
- STDMETHOD(SetEraseColor) (COLOR3D acolor) PURE;
- };
-
- DECLARE_INTERFACE_(I3DExDoubleBuffer, IUnknown) {
- STDMETHOD(BeginDoubleBuffer) (const RECT3D &area) PURE;
- STDMETHOD(EndDoubleBuffer) () PURE;
- };
-
- #endif
-